package com.xyx.hw;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Scanner;


public class Homework0803 {
	public static void main(String[] args) {
		testHomework2();
	}
	private static void testHomework() {
		Scanner sc=new Scanner(System.in);
		System.out.println("输入查找路径");
		String strPath=sc.nextLine();
		homeWork_1(strPath);
	}
	private static void testHomework2() {
		Scanner sc=new Scanner(System.in);
		System.out.println("输入查找路径");
		String strPath=sc.nextLine();
		System.out.println("输入查找关键词");
		String keyWords=sc.nextLine();

		homeWork_3(strPath,keyWords);
	}
	private static void homeWork_1(String strPath) {
		//判断路径是否为空
		if(strPath!=null&&!strPath.equals(""));
		//创建文件的对象
		File file=new File(strPath);
		//判断是否是目录
		if(file.isDirectory()) {
			//输出当前目录
			System.out.println("目录"+file.getAbsolutePath());
			//给当前获得的目录赋值给数组
			String [] str=file.list();
			//递归遍历查找文件
			for (String string : str) {
				homeWork_1(file.getAbsolutePath()+file.separator+string);
			}
		}else {
			//输出文件的绝对路径
			System.out.println("文件目录"+file.getAbsolutePath());
		}
	}
	private static void homeWork_2(String strPath,String keyWords) {
		//判断路径是否为空
		if(strPath!=null&&!strPath.equals(""));
		//创建文件的对象
		File file=new File(strPath);
		//判断是否是目录
		if(file.isDirectory()) {
			//输出当前目录
			System.out.println("目录"+file.getAbsolutePath());
			//给当前获得的目录赋值给数组
			String [] str=file.list();
			//递归遍历查找文件
			for (String string : str) {
				homeWork_2(file.getAbsolutePath()+file.separator+string,keyWords);
			}
		}else {
			if((file.getName()).contains(keyWords)) {
			//输出文件的绝对路径
			System.out.println("文件目录"+file.getAbsolutePath());
			}
		}
	}
	private static void homeWork_3(String strPath, String strKeyWords) {
		if (strPath != null && !strPath.equals("")) {
			File file0 = new File(strPath);
			// 判断该文件是目录还是文档
			if (file0.isDirectory()) {
				System.out.println("目录：" + file0.getAbsolutePath());
				// 依次递归该目录下的所有的文件对象，匿名内部类
				String[] strSubFiles = file0.list(new FilenameFilter() {
					@Override
					public boolean accept(File dir, String name) {
						// 创建当前文件对象
						File file0 = new File(dir + File.separator + name);
						// 判定当前文件是目录还是文档
						if (file0.isDirectory()) {
							// 目录包含在list结果中
							return true;
						} else {
							// 如果是文件，则需要包含 查找关键字，才能包含在list结果中
							if (name != null && name.contains(strKeyWords)) {
								return true;
							}
						}
						// 其他情况不包含在结果List中
						return false;
					}
				});

				for (String strSub : strSubFiles) {
					// 递归调用，遍历当前目录
					homeWork_3(file0.getAbsolutePath() + File.separator + strSub, strKeyWords);
				}
			} else {
				// 获取文件名
				String file0Name = file0.getName();
				// 添加过滤条件
				//不再需要添加过滤判断的条件
				//if (file0Name.contains(strKeyWords)) {
					// 输出符合过滤条件的文件名
					System.out.println("文件：" + file0.getAbsolutePath());
				//}
			}
		}
	}
}
